from enum import Enum
from typing import Dict, List

class AgeGroup(Enum):
    """年龄分组"""
    LOWER_PRIMARY = "低年级(1-2年级)"
    MIDDLE_PRIMARY = "中年级(3-4年级)"
    UPPER_PRIMARY = "高年级(5-6年级)"

class EducationFeature:
    """教育功能"""
    def __init__(self):
        self.prompts = self._get_age_prompts()
        self.games = self._get_educational_games()
    
    def _get_age_prompts(self) -> Dict[AgeGroup, str]:
        """获取年龄分组对应的提示词"""
        return {
            AgeGroup.LOWER_PRIMARY: """
                请使用简单的语言和具体的例子来解释。
                避免抽象概念，多用图示和比喻。
                每句话不超过15个字。
                多用emoji表情。
            """,
            AgeGroup.MIDDLE_PRIMARY: """
                可以使用基础的专业术语。
                配合图示和类比来解释。
                鼓励动手实践。
                适当提出思考问题。
            """,
            AgeGroup.UPPER_PRIMARY: """
                可以引入更多专业概念。
                鼓励独立思考和提问。
                引导分析问题的方法。
                培养批判性思维。
            """
        }
    
    def _get_educational_games(self) -> Dict[AgeGroup, List[Dict]]:
        """获取教育游戏"""
        return {
            AgeGroup.LOWER_PRIMARY: [
                {
                    "name": "数字接龙",
                    "description": "我说一个数字，你接一个更大的数字",
                    "rules": "每个数字要比前一个大，但不能超过10"
                },
                {
                    "name": "找形状",
                    "description": "说出身边物品的形状",
                    "rules": "需要说出为什么像这个形状"
                }
            ],
            AgeGroup.MIDDLE_PRIMARY: [
                {
                    "name": "词语接龙",
                    "description": "用上一个词语的最后一个字开始",
                    "rules": "必须是正确的词语，不能重复"
                },
                {
                    "name": "猜谜语",
                    "description": "解答与课程相关的谜语",
                    "rules": "提供三次机会，有提示"
                }
            ],
            AgeGroup.UPPER_PRIMARY: [
                {
                    "name": "知识问答",
                    "description": "回答综合性的知识问题",
                    "rules": "需要解释思考过程"
                },
                {
                    "name": "科学实验",
                    "description": "进行简单的科学实验",
                    "rules": "在家长指导下进行，记录观察结果"
                }
            ]
        }
    
    def get_prompt(self, age_group: AgeGroup) -> str:
        """获取对应年龄组的提示词"""
        return self.prompts.get(age_group, self.prompts[AgeGroup.MIDDLE_PRIMARY])
    
    def get_games(self, age_group: AgeGroup) -> List[Dict]:
        """获取对应年龄组的游戏"""
        return self.games.get(age_group, self.games[AgeGroup.MIDDLE_PRIMARY]) 